<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 1。SyntaxError 语法错误
    // 变量名不规范
    // var 1 = 1;
    // var 1ta = 1;
    // 关键字赋值
    // new = 5;
    // function = 6;
    // 基本的语法错误
    // var a = 4:



    // 2 ReferenceError 引用错误
    // 变量或者含糊是未被声明
    // test();
    // console.log(a);
    // 给无法被赋值的对象赋值的时候
    // console.log(a) = 1


    // 3 RangeError范围错误
    // 数组长度赋值为负数
    // var arr = [1, 3, 5]
    // arr.length = -1
    // console.log(arr)
    // 对象方法参数超出可行范围
    // var num = new Number(66.66);
    // console.log(num.toFixed(-1))


    // 4 TypeError类型错误
    // 调用不存在的方法
    // 111()
    // var obj = {}
    // obj.aaa()
    // 实例化原始值
    // var a = new 'string';
    // var a = new 123



    // 5  URIError URI错误
    // URL有中文字时，会被编码。收到后再解析
    // 解析错误格式的编码
    // var str = decodeURI('%321321%')

    // 6 EvalError  eval函数执行报错




    // 自己写错误信息
    // var error = new TypeError('代码执行错误');
    // var error = new Error('321321')
    // console.log(error)



    // try catch  finally(它是放在catch之后的，不过里面的函数和放在外面完全一样，一般用不到)   throw
    // try catch 一般用于可预见性的错误，，，大段使用去遮盖一些错误是不服责任的
    // var jsonStr = '';
    // try {
    //   if (jsonStr == '') {
    //     throw 'JSON字符串为空'
    //   }
    //   console.log('我要执行了');
    //   var json = JSON.parse(jsonStr);
    //   console.log(json);
    // } catch (err) {
    //   console.log(err);
    //   var errorTip = {
    //     name: 'shuju传输错误',
    //     errorCode: 10010
    //   }
    //   console.log(errorTip)
    // }


  </script>
</body>

</html>